Get Started topic
Getting started with Sequelize Dart — a type-safe ORM for Dart powered by Sequelize.js via a Node.js bridge.
Prerequisites
Node.js v18+ must be installed. Sequelize Dart uses a background Node.js process to run Sequelize.js queries against your database.
node --version # Should print v18.x.x or later
Installation
dependencies:
sequelize_orm: ^0.1.5
dev_dependencies:
sequelize_orm_generator: ^0.1.5
build_runner: ^2.10.4
Then run dart pub get.
Database Connection
import 'package:sequelize_orm/sequelize_orm.dart';
final sequelize = Sequelize().createInstance(
connection: SequelizeConnection.postgres(
host: 'localhost',
port: 5432,
database: 'my_database',
user: 'postgres',
password: 'postgres',
),
logging: SqlFormatter.printFormatted,
);
Supported dialects: PostgreSQL, MySQL, MariaDB, SQLite.
Define a Model
import 'package:sequelize_orm/sequelize_orm.dart';
part 'users.model.g.dart';
@Table(tableName: 'users', underscored: true)
class Users {
@PrimaryKey()
@AutoIncrement()
@NotNull()
DataType id = DataType.INTEGER;
@NotNull()
DataType email = DataType.STRING;
@ColumnName('first_name')
@NotNull()
DataType firstName = DataType.STRING;
@ColumnName('last_name')
DataType lastName = DataType.STRING;
static UsersModel get model => UsersModel();
}
Generate Code
generate (Recommended)
This command is significantly faster than build_runner as it only processes your models.
dart run sequelize_orm_generator:generate
build_runner
Standard Dart code generation. Use this if you have other builders in your project.
dart run build_runner build --delete-conflicting-outputs
This generates typed query builders, create/update DTOs, column references, and include helpers.
Basic Queries
// Create
final user = await Users.model.create(
CreateUsers(email: 'alice@example.com', firstName: 'Alice', lastName: 'Smith'),
);
// Find all
final allUsers = await Users.model.findAll();
// Find one with where clause
final found = await Users.model.findOne(
where: (u) => u.email.eq('alice@example.com'),
);
// Update
await Users.model.update(firstName: 'Alicia', where: (u) => u.id.eq(1));
// Aggregate
final count = await Users.model.count();
Classes
- Sequelize Get Started
- Unified Sequelize implementation for both Dart VM and dart2js. Both platforms now use the bridge pattern (stdio for VM, Worker Thread for JS).
- SequelizeConnection Get Started
- Factory class for creating Sequelize connection configurations.